<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
// ----------------------------------------------------------------------
// Source file:  $Source: /cvsroot/pn-commerce/pn-commerce/pndocs/lang/eng/manual/pn726-manual.html,v $
//
// Last changes from:  $Author: jimhadfield $
//
// Revision:           $Revision: 1.1 $
//
// Date of revision    $Date: 2004/10/07 21:49:49 $
//
// ----------------------------------------------------------------------
-->
<html>
<head>
  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
  <title>pnCommerce :: documentation</title>
  <meta name="CLASSIFICATION" content="pnCommerce">
  <meta name="DESCRIPTION"
 content="This is the main documentation manual for pnCommerce.  An ecommerce module developed for PostNuke.">
<!--document created by - Jim Hadfield, jhadfiel@snowbankih.com - http://snowbankih.com -->
</head>
<body>
<ol>
  <p class="western"><font color="#333333"><font face="Arial, Helvetica, sans-serif"> 
  <font size="2">  pnCommerce v.92.3 == release candidate 2:= 7/15/2004<br>
  User's Manual<br>
  Author:Jim Hadfield<br>
  Additional Input from: Patrick Corneli&szlig;en and Frank Schummertz<br>
  Please note that this documentation is a 'work in progress'. As I finish it
 off, it will be kept in the CVS and online at both support sites. </font></font></font></p>
  <p class="western"><font color="#333333"><font face="Arial, Helvetica, sans-serif"><font size="2"> Note:
          documentation of our brainlink (tm) function is not implemented at
          this time...
  </font></font></font></p>
  <p><font size="2" face="Arial, Helvetica, sans-serif">document revision date:
      8/2/2004</font></p>
</ol>
<hr>
  	  
<p><a name="toc" id="toc"></a>Table of Contents </p>

<blockquote>
  <p>
  	<a name="1"></a><a href="#installation">1.0 Installation</a>
  </p>
</blockquote>
<ol>
  <blockquote>
    <p> <a href="#101">1.01</a> pncommerce module installation for PostNuke.</p>
  	  <blockquote>
    	  <p>
		  		<a href="#101a">1.01.a</a> Unpack the contents<br>
        		<a href="#101b">1.01.b</a> Module Installation
		 </p>
    </blockquote>
    	<p>
			<a href="#102">1.02</a> Adding a link to the main menu block.<br>
	   		<a href="#103">1.03</a> Permissions.<br>
			<a href="#104">1.04</a> UpGrading from a previous version<br></p>
  </blockquote>
  
  <p>
  	<a name="2"></a><a href="#configuration">2.0 Configuration</a>
  </p>
  
  <blockquote>
    <p>
		<a href="#201">2.01</a> Shopping Cart Configuration
	</p>
    <blockquote>
      <p>
			<a href="#201a">2.01.a</a> Address and Account Information<br>
          	<a href="#201b">2.01.b</a> Misc. Settings<br>
          	<a href="#201c">2.01.c</a> Template Settings<br>
          	<a href="#201d">2.01.d</a> Color Settings<br>
          	<a href="#201e">2.01.e</a> SSL Settings<br>
          	<a href="#201f">2.01.f</a> Thumbnail Settings<br>
          	<a href="#201g">2.01.g</a> Policy Settings
	  </p>
    </blockquote>
	
    <p> 
		<a href="#202">2.02</a> Value Added Tax<br>
		<a href="#203">2.03</a> Configuring the Payment Methods <br>
		<a href="#204">2.04</a> Future<br>
		<a href="#205">2.05</a> Country Specific Settings (Monetary)<br>
		<a href="#206">2.06</a> Configuring the Shipping<br>
		<a href="#207">2.07</a> Order Management<br>
	<blockquote>
    		<p>
				<a href="#207a">2.07.a</a> Get a copy of an invoice<br>
    			<a href="#207b">2.07.b</a> Search Receipts Response<br>
    			<a href="#207c">2.07.c</a> Order Management<br>
    			<a href="#207d">2.07.d</a> Display Receipt<br>
    		</p>
	</blockquote>
			  
      <a href="#208">2.08</a> Validate the database<br>
	  
      <a href="#209">2.09</a> Order Modifiers<br>
	<blockquote>
    		<p>
				<a href="#209a">2.09.a</a> Handling<br>
    			<a href="#209b">2.09.b</a> Sales Tax<br>
    		</p>
	</blockquote>
	  
  </blockquote>

		<p>
			<a name="3"></a><a href="#activate">3.0 Activate/Deactivate the Cart</a>
		</p>
  
		<p>
			<a name="4"></a><a href="#templates">4.0 Templates</a>
		</p>
  		   <blockquote>
 			   <p>
					<a href="#401">4.01</a> Using and Editing Templates<br>
					<a href="#402">4.02</a> Removing a Template
			 </p>
		  </blockquote>
  
  	<p>
		<a name="5"></a><a href="#reports">5.0 Reports</a>
	</p>
  	<blockquote>
    	<p>
			<a href="#501">5.01</a> Edit by Category Tree<br>
    		<a href="#502">5.02</a> Future Link</a><br>
    		<a href="#503">5.03</a> Future Link<br>
    		<a href="#504">5.04</a> Statistics<br>
    		<a href="#505">5.05</a> PNC Core Version File Numbers<br>
    		<a href="#506">5.06</a> Future Link<br>			
   	  </p>
  </blockquote>
  
    <p>
		<a name="6"></a><a href="#categories">6.0 Categories</a>
	</p>
  	<blockquote>
    	<p> 
			<a href="#601">6.01</a> Add a Category<br>
      		<a href="#602">6.02</a> Edit a Category
	  <blockquote>
					<a href="602a">6.02.a</a> Sorting Categories
	  </blockquote>
      		<a href="#603">6.03</a> Category Error<br>
      		<a href="#604">6.04</a> Remove a Category
		</p>
    </blockquote>
  
    <p>
		<a name="7"></a><a href="#products">7.0 Products</a>
	</p>
    <blockquote>
    	<p>
			<a href="#701">7.01</a> Add a Product<br>
      		<a href="#702">7.02</a> Edit a Product<br>
      		<a href="#703">7.03</a> Item Error<br>
      		<a href="#704">7.04</a> Remove a Product<br>
      		<a href="#705">7.05</a> Final Value Modification
		</p>
    </blockquote>
  
    <p>
		<a name="8"></a><a href="#customermanagement">8.0 Customer Management</a>
	</p>
  
    <p>
		<a name="9"></a><a href="#custommodules">9.0 Custom Modules</a>
	</p>
    <blockquote>
    	<p>
			<a href="#901">9.01</a> Read and Manage Log Entries
		</p>
   </blockquote>
  
   <p>
   		<a name="10"></a><a href="#misc">10.00 Misc.</a>
  </p>
  	<blockquote>
    	<p>
			<a href="#1001">10.01</a> Date and Time Formatting<br>
			<a href="#1002">10.02</a> Importing Data from a CSV file<br>
			<a href="#1003">10.03</a> Exporting Data to a CSV file<br>
			<a href="#1004">10.04</a> SQL and how to use it									
		</p>
  </blockquote>
  
     <p>
   		<a name="11"></a><a href="#blocks">11.0 Blocks</a>
	</p>
   <blockquote>
   	<p>
		<a href="#1101">11.01</a> Add a Block<br>
      	<a href="#1102">11.02</a> Edit a Block<br>
      	<a href="#1103">11.03</a> Templates<br>
		<a href="#1104">11.04</a> Comments Block<br>
		<a href="#1105">11.05</a> Custom pnRender Blocks</p>
  </blockquote>
  
  <hr>
  
  <p></p>
  <p><a name="installation"></a>1.0 Installation :: Installing the pnCommerce
    module </p>
  <blockquote>
    <p><a name="101"></a>1.01 pnCommerce module installation
      for PostNuke</p>
    <blockquote>
      <p><a name="101a"></a>1.01.a Unpack the contents of the archive into the
      /modules directory. </p>
      <ul>
        <li><strong>pnCommerce Install:</strong> If you are using a cvs version
          of this module, you MUST rename the
            directory from
                /pn-commerce to /pncommerce before uploading it to your server.
          We highly suggest the
              use of PN .726 for use with this version of pnCommerce. The current
              public release of PN .726 does not include the current version
          of pnMod.php. The correct version of pnMod.php is included in the pncommerce
              distribution package. Place it in the PN root /includes dir replacing
              the old
              one. This is required for ssl and other pnCommerce functions to
        work. <em>If you are using the XTE theme engine, you can not use this
        version of pnMod.php</em></li>
        <li>          <strong>pnRender Install:</strong> You will have to install
          the most recent version of the pnRender package. We would suggest downloading
          the XTE
          (Xanthia
          Theme
          Engine).
              The current
              pnRender module and other needed files are included in the XTE
              package. We are providing the &quot;pure&quot; pnRender package
              without the Xanthia Engine in the Download areas on the pnCommerce
              support sites. The following link will get you there too: <a href="http://www.pncommerce.de/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=19" target="_blank">http://www.pncommerce.de/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=19</a><br>
              <br>
              <strong>              pnRender:</strong><br>
          In PN root, upload /pnTemp found in the package, chmod /pnTemp and
          the underlying dirs
    to
    777.<br>
    in PN root, upload index.php found in the package.<br>
    In PN root /includes, upload pnAPI.php found in the package.<br>
    In PN root /includes, upload pnHTML.php found in the package.<br>
    In PN root /includes, upload pnRender.class.php found in the package.<br>
    In PN root /includes/classes, upload /Smarty found in the package. <br>
    In PN root /modules
    upload /pnRender. This will need to be initialized via  PN Modules installation.<br>
    You will have to add the following line to the PostNuke config.php file:
     $pnconfig['temp'] = 'pnTemp';    <br>
    <br>
    <strong>pnCommerce:</strong><br>
    You will have to chmod
    777  /modules/pncommerce/product_images (the directory that your product
    images will be uploaded to) and /modules/pncommerce/category_images (the
    directory that
    your category images will be uploaded to).<br>
	Upload index.php found in the pacakage /html/index.php to your PN root. 
	This is needed to replace the original that came with PN.<br>
	It is also highly reccomended not to do a pnCommerce install when you are
	half asleep... (personal experience)</li>
      </ul>

      <p>
			<a name="101b" id="101b"></a>1.01.b Module Installation
	  </p>
      <ul>
        <li> Log into PostNuke as administrator. </li>
        <li> Go to, Administration :: Modules</li>
        <li> Regenerate the modules</li>
        <li> Select, pncommerce :: Initialize </li>
        <li> Select, pncommerce :: Activate </li>
        <li> When this is done, go to your adminpage and click on pn-commerce.
          There you will get the options to set up your shopping cart. Be
          sure to go to admin screen, click on config &amp; set up your variables.
              See <a href="#configuration">2.0 Configuration</a></li>
		 <li>You will have to set up a group permission in PostNuke to allow your
		 customers to look at the store without actually buying.<br>
		 | Unregistered | pncommerce::* | .* | (see <a href="#103">1.03 Permissions</a>)<br>
        </li>
      </ul>
    </blockquote>

    <p>
		<a name="102"></a>1.02  Adding a link to the main menu block
	</p>
    <ul>
      <li> Go to Administration :: Blocks, then click on 'Edit' the Main Menu
        (or which ever menu tree that will be used on your site), insert a line,
              then enter
              the name of your shopping cart (Catalog, Shopping Cart, etc.),
        then
            in the URL enter &quot;{pncommerce}&quot; (without the quotes) then
            enter a short description of the menu listing. The {} around the
            module name
            are
            used for
        API compliant modules. </li>
    </ul>
	
    <p><a name="103"></a>1.03   Permissions</p>
	
<blockquote>
	<table style="text-align: left;" border="1" cellspacing="2" cellpadding="2">
    <tbody>
      
	  <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif"><span style="font-weight: bold;">component</span></font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif"><span style="font-weight: bold;">instance</span></font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif"><span style="font-weight: bold;">permissions
			level, description</span></font>
		</td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::category</font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">&lt;categoryName&gt;::&lt;categoryID&gt;</font>
		</td>
        <td style="vertical-align: top;">
		<font face="Arial, Helvetica, sans-serif">

        <ol>
          <li>overview - see the items in the category</li>
          <li>read - see the detail informations for items of that category</li>
          <li>comment - buy the items in this category</li>
          <li>edit - edit the category</li>
          <li>add - add an item to the category</li>
        </ol>
        </font></td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::item</font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">&lt;itemSKU&gt;::&lt;itemID&gt;</font>
		</td>
        <td style="vertical-align: top;"><font face="Arial, Helvetica, sans-serif">
		
        <ol>
          <li>overview - see the item in itemlists</li>
          <li>read - see the detail informations</li>
          <li>comment - buy the item</li>
		  <li>edit - edit this item</li>
	   </ol>
        </font></td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::method</font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">&lt;methodType&gt;::&lt;methodName&gt;</font>
		</td>
        <td style="vertical-align: top;"><font face="Arial, Helvetica, sans-serif">
		
        <ol>
          <li>comment - see&amp;use this pay-/shipmethod</li>
          <li>admin - do admin stuff like config, add, ...</li>
        </ol>
        </font></td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::config</font>
		</td>
        <td align="center" style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">::</font>
		</td>
        <td style="vertical-align: top;"><font face="Arial, Helvetica, sans-serif">
		
        <ol>
          <li>admin - change the shopconfig</li>
        </ol>
        </font></td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::order </font>
		</td>
        <td align="center" style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">::</font>
		</td>
        <td style="vertical-align: top;"><font face="Arial, Helvetica, sans-serif">
		
        <ol>
          <li>admin - modify/remove orders</li>
        </ol>
        </font></td>
      </tr>
	  
      <tr>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">pncommerce::template</font>
		</td>
        <td style="vertical-align: top;">
			<font face="Arial, Helvetica, sans-serif">&lt;templateID&gt;::</font>
		</td>
        <td style="vertical-align: top;"><font face="Arial, Helvetica, sans-serif">
		
        <ol>
          <li>admin - modify/add/delete templates</li>
        </ol>
        </font> </td>
      </tr>
    </tbody>
  </table>
  </blockquote>
    
  <ul>
	<br>
      
    <li> Examples:</li>
    <br>
      users|pncommerce::*|.*|comment<br>
        <span style="font-style: italic;">All users are allowed to go shopping</span><br>
        <br>
      users|pncommerce::category|secret::*|none<br>
      users|pncommerce::*|.*|comment<br>
        <span style="font-style: italic;">All users are allowed to go shopping,
        but the can't access the category with the name "secret"</span><br>
        <br>
      users|pncommerce::item|secretItem::*|none<br>
      users|pncommerce::*|.*|comment<br>
        <span style="font-style: italic;">All users are allowed to go shopping,
        but they can't see the item with the SKU "secretItem"</span><br>
        <br>
      anonymous|pncommerce::*|.*|read<br>
      users|pncommerce::*|.*|comment<br>
        <span style="font-style: italic;">Anonymous users can see items, but
        they can't place items in the cart, but normal users are allowed to go
        shopping</span><br>
   </ul>
 
       <p><a name="104"></a>1.04 Upgrading pnCommerce</p>  
	   
	   		<blockquote>
					<ul>
						<li>the core</li>
						<li>the blocks - you must replace the block if you are upgrading from .82x
						  to .92x</li>
					</ul>
			</blockquote>
   
</blockquote>   <br>
   
    <p><a href="#toc">Return to Index</a><br>
    </p>
	
    <hr>
  
    <p><a name="configuration"></a>2.0  Configuration - where the basic store
      options are set-up.<br>
      To access the Configuration menu, in PN, go to Administration :: pncommerce,
       then click on &quot;Shopping Cart Configuration&quot; </p>

    <blockquote>
      <p><a name="201"></a>2.01 Shopping Cart Configuration
          :: Setting the options for your storefront.</p>

      <blockquote>
        <p><a name="201a"></a>2.01.a Address and Account Information</p>
        <ul>
          <li> Enter the information for: Company,
                            Address1, Address2, City, State, Zip, Country, Phone,
            Fax, Web Site url, and the email address that you
                              want
                                    to use for the store. This portion of the
            configuration MUST be completed or the module may not function properly.
            If you intend
                        to use the 'Bank Draft' payment method, you will have
            to fill in the
                        information
                            about your bank account here.</li>
        </ul>
        <p><br>
          <a name="201b" id="201b"></a>2.01.b Misc. Settings</p>
        <ul>
          <li> Disable International Shipping. When checked, this prevents
                      international customers from ordering. </li>
          <li> Create Items as Tax Exempt.  Automatically sets all items
                                    as &quot;Tax
                              Exempt&quot; when
                                you create a new them. </li>
          <li>Show Cart When an Item has been added. If checked, the cart will
                        be displayed every time a customer add something to their
            cart. </li>
          <li>Minimum order value. If set, this will prevent customers from checking
                        out with anything less than the set value.</li>
          <li>Unit of weight measurement.  _LB or _KG depending on your
          country... </li>
          <li>Items per page.  This will set the default of how many items/products
          you want displayed. </li>
          <li> Cart Life.  This will set the default for the cart
                                              cookie life. </li>
          <li>Log Level.  You are allowed to set logging for &quot;Everything&quot;, &quot;User
                      Errors&quot;, &quot;Admin
                      Errors&quot;, &quot;General Warnings&quot;, &quot;User
                      Warnings&quot;, &quot;Admin
                    Warnings&quot; , &quot;Notices&quot; and &quot;No Logging&quot;</li>
          <li> Hide Empty Categories from Customer.  When checked,
                                                  empty Categories will not be
            displayed in the catalog pages. </li>
        </ul>
        <p><a name="201c" id="201c"></a>2.01.c Template Settings</p>
        <ul>
          <li>Templates are set to a default value during initial installation.
                      If you choose to create you own, you will need to set them
            here after you
                        have created them before they will be shown in the store.</li>
        </ul>
        <p><a name="201d" id="201d"></a>2.01.d Color Settings</p>
        <ul>
          <li>Alternating Color #1</li>
          <li>Alternating Color #2</li>
          <li>Shop Name Color</li>
          <li>Header Background color</li>
          <li>Header Text Color</li>
          <li>Item Mouse Over Color</li>
        </ul>
        <p><a name="201e" id="201e"></a>2.01.e SSL Settings</p>
        <ul>
          <li>Use SSL. Check to use SSL in the checkout procedure. </li>
          <li> SSL Path if different...:
                            Set this to the url that redirects the encrypted
            data to your domain, if necessary.<br>
            Example:
                    Your domain is http://www.test.com<br>
            You get a message that displays a warning when you use https://www.test.com <br>
            Your domainprovider offers a service that redirects ssl traffic
                    through one of his servers, using a special URL like https://sslsites.com/&lt;yourdomain&gt; Then
                    you have to set SSLPath to https://sslsites.com/test.com/
                    (Assuming that this is the URL your provider gave you, the
                    exact url may
                    differ, depending
                    on the
                    configuration) </li>
        </ul>
        <p><a name="201f" id="201f"></a>2.01.f Thumbnail Settings</p>
        <ul>
          <li>Disable uploading of thumbnails: Check to disable the option of
            uploading thumbnail images.</li>
          <li> Disable ignore thumbnails: Check if you always want a thumbnail.</li>
          <li> Disable automatic creation of thumbnails: Check to disable option
                      to automatically create thumbs. </li>
          <li>Standard size for thumbnails. </li>
          <li>Use Alternative Images.</li>
          <li>Alternative Image for items.</li>
          <li>Alternative Image for item thumbnails.</li>
          <li>Alternative Image for categories.</li>
          <li>Alternative Image for category thumbnail.</li>
          <li> Automatic Creation via IM: check if you want to use IM for thumbnail
                                creation. Also set the path to your IM installation. </li>
          <li> Automatic Creation via GD: check if you want to use GD for
                                      thumbnail creation. This requires GD libraries
            compiled with PHP on the server side.</li>
        </ul>
		
        <p><a name="201g" id="201g"></a>2.01.g Policy Settings</p>
        <ul>
          <li> Store Policies: check if you want to enable Store Policies. </li>
          <li>Fill in the Store Policies in the text box. HTML is allowed. </li>
          <li>Check to force customers to agree to the Store Policies before
            finishing their checkout.</li>
        </ul>
	</blockquote>
	  
      <p> <a name="202"></a>2.02 Edit the Value Added Tax</p>
	          <ul>
          <li> The VAT is primarily for European Countries where tax amounts
            will vary based on the individual product.</li>
          <li>Add the percentages to different VAT IDs. You can assign these
            IDs to <br>
            categories or products.<br>
            Example: 
            For 16% VAT you enter 16 and not 0.16 or 1.16</li>
        </ul>

		
      <p><a name="203"></a>2.03 Configure Payment Methods</p>

	  		<blockquote>
				  <p><a name="203a" id="203a"></a>2.03.a Payment Methods<br>
				  The Payment Methods for pnCommerce are modular.  This means
				    that we have left the opportunity for the creation of additional
				    gateways open. Please send an email to <a href="mailto:team@pncommerce.de">team@pncommerce.de</a>				    for
				    additional information.</p>
        				
        <ul>
          <li>The Payment Methods set up as defaults in pnCommerce are: 
            <blockquote> 
              <ul>
                <li>C.O.D</li>
                <li>Invoice</li>
                <li>Generic Payment</li>
                <li>Account Transfer</li>
                <li>2Checkout</li>
                <li>Credit Card</li>
                <li>PayPal</li>
                <li>Check or Money Order</li>
                <li>Debit</li>
              </ul>
            </blockquote>
          </li>
          <li>You will need to 'Add' a payment method before anything else. After
             one has been added, You will see a 'Deactivate' button, a 'Configure'
            
            button and a 'Remove' button. If you 'Deactivate' a payment method,
             you can 'Activate' it again by clicking on the 'Activate' button
            that 
            appears in place of the 'Deactivate' button.</li>
          <li>Typically, the configuration of each of these will consist of a
             'fee schedule'. You will have to determine what fees (if any) you
            
            want to have for these various payment methods.</li>
          <li>The 'Generic Payment' allows you to create your own versions of
             Payment Methods.</li>
          <li>Account Transfer is also known as a 'Bank Transfer'. This refers
             to the information that you may have entered in the 'Shopping Cart
            
            Configuration' screen.</li>
          <li>2checkout is an online credit card processing company. This configuration
             is similar to the other payment methods. You will need to have an
            
            account with 2checkout (<a href="http://www.2checkout.com" target="_blank">http://www.2checkout.com</a>)
             in order to use this. We have included a 'test mode' for you to
            experiment 
            with prior to actually using this module.</li>
          <li>The 'Credit Card' payment method that is available in this module,
             is designed for you to accept credit cards on your own server. pnCommerce
            
            uses mcrypt and ssl (if available on your server) to protect the
            credit  card numbers. First, check if you want to use mcrypt. We
            highly suggest 
            that you use this as it is an excellent algorithm for protecting
            any  credit card numbers being entered. If you host does not have
            mcrypt 
            installed, you should ask for it. The 'Mcrypet key' is a random alpha-numeric
             that you create and enter. Please keep a log of this number in a
            safe 
            place as it is the password/key to viewing data after you have enabled
             it. You will need to place a check box next to the cards you want
            
            to accept locally on your server. Then add any fees that you may
            charge  for the Credit Card handling.</li>
          <li>For PayPal, you will need your own account. Enter the email address
             as associated with that account, then a url for a logo if you wish
            
            to use a custom logo, then in the drop down box, assign the currency
             type that you are useing.</li>
          <li>Check or Money order is pretty self explanatory. This is for use
             if you accept payment with an order that is sent via snail mail.
            Be 
            sure to enter the information for 'Contact Name' as that is the string
             used for 'who to make the check out to'</li>
          <li>Debit is used in conjunction with the data that you may have entered
             in the 'Shopping Cart Configuration' screen. This feature is for
            inter-bank 
            money transfers. Apply fees as necessary.</li>
        </ul>
		        <p><a name="203b" id="203b"></a>2.03.a Default Payment Method</p>
        				<ul>
          					<li>This allows you to set a 'default' Payment method for new
          					  customers to your store.</li>
			  </ul>
			</blockquote>
	  
      <p><a name="204"></a>2.04 Future</p>
	  
      <p><a name="205"></a>2.05 Country Specific Settings (Monetary)<br>
      	These settings were developed as we found too many servers that did not
      		have any monetary settings set in their PHP or they were set for
      		a country other than that in which the customer was selling.</p>

        				<ul>
       					 <li>Server Side Settings:<br>
          					  PHP supports a wide variety of settings that can
          					  	be configured. If you want to know more about
          					  	this, you will	want to visit <a href="http://php.net/money_format">
						  	  http://php.net/money_format </a><br>
						  	  If your server supports this, you can set your
						  	  currency according to the country that you are
						  	  in.</li>
							 <li>Date Format:<br>
          					  Set the date format here.  See <a href="#1001">10.01</a> for
          					  details.</li>
							  <li>Time Format:<br>
          					  Set the time format here.  See <a href="#1001">10.01</a> for
          					  details.</li>
							  <li>Default Currency Symbol:<br>
          					  No Currency Symbol - Sets the default to show NO
          					  	currency symbol<br>
							  Currency Symbol - Sets the default to show the
							  currency symbol based on  Server Side Settings.
							  $, &pound;, &#8364;, &yen;,
							  etc.<br>
							  International Currency Symbol - Sets the default
							  to show the currency name based on  Server Side
							  Settings. USD, CAD, EUR, GBP, JPY, etc.</li>
							  <li>Decimal Delimiter:<br>
          					  By placing a , or . in here, you can define the
          					  	look of the delimiter and over-ride the default
          					  	settings.</li>
							  <li>Thousands Separator:<br>
          					  By placing a , or . in here, you can define the
          					  	look of the delimiter and over-ride the default
          					  	settings.</li>
							  <li>Currency Symbol:<br>
          					  This allows you to over-ride the default configuration.
          					  	Typical currency symbols  are: $, &pound;, &#8364;, &yen;,
          					  	etc.</li>
							  <li>International Currency Symbol:<br>
          					  This allows you to over-ride the default configuration.
          					  	 Typical currency names are: USD, CAD, EUR, GBP,
          					  	JPY, etc.</li>
						</ul>
	  
      <p><a name="206"></a>2.06 Configure the Shipping</p>

	  		<blockquote>
				  <p><a name="206a" id="206a"></a>2.06.a Shipping Methods<br>
				  The Shipping Methods for pnCommerce are modular.  This means
				    that we have left the opportunity for the creation of additional
			    gateways open. Please send an email to <a href="mailto:team@pncommerce.de">team@pncommerce.de</a>			    for
			    additional information.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       </p>
        				<ul>
          					<li> Generic Shipping Method:<br>
          					  This is the only shipping module that comes pre-installed
          					    on pnCommerce. You must first 'Add' it, then
          					    'Configure' it. During Configuration, you will
          					    be given the opportunity to name your own shipping
          					    method(s) and apply any one of two different
          					    fee structures to it.</li>
        				</ul>
		        <p><a name="206b" id="206b"></a>2.06.b Default Shipping Method</p>
        				<ul>
          					<li>This allows you to set a 'default' Shipping method for new
          					  customers to your store.</li>
			  			</ul>
			</blockquote>
	  
      <p><a name="207"></a>2.07 Order Management<br>
	  Order Management will allow you to select orders via several search routines
	    for editing.</p>
	  <blockquote>
	  		<ul>
				<li>Update Order</li>
			    <li>Delete Order</li>
	  		    <li>Return to Search Receipts</li>
	  		    <li>Back to Invoice List</li>
	  		    <li>Resend this email</li>
	  		</ul>
	  </blockquote>
      <p><a name="208"></a>2.08 Validate the Database</p>
      <p><a name="209"></a>2.09 Order Modifiers<br>
        Currently, only handling and US and Canadian sales tax are handled here.</p>
		<blockquote>
				  <p><a name="209a" id="209a"></a>2.09.a Handling</p>
        				<ul>
          					<li>First, you will have to 'Add' a handling charge.</li>
							<li>Then, a new display will appear on top allowing you to 'Deactivate',
							  'Configure' or 'Remove' 	your new handling charge.</li>
							<li>Currently, pnCommerce only supports a flat fee for the handling charge.
							  Click on the 'Configure' button, enter your handling
							  charge, and then press 'Submit'</li>
			  			</ul>				  
		        <p><a name="209b" id="209b"></a>2.09.b Sales Tax</p>
        				<ul>
          					<li>Current configuration is for US and Canada only.</li>
							<li>First, you will have to 'Add' a tax.</li>
							<li>Then, a new display will appear on top allowing you to 'Deactivate',
							  'Configure' or 'Remove' 	your new tax.</li>
							<li>Press the 'Configure' button.  Now you need to decide if this is a
							  local or state/province tax.  If it is a local
							  tax, then you can just enter the name of the tax,
							  the rate, and the name of the 
							city/municipality, 	determine if you are going to
							  tax shipping and handling and then press 'Submit'</li>
							<li>If this tax is for a US State or Canadian Province then, enter the
							  name of what you want to  call your tax, then the
							  rate, and the select the name of the state/province
							  from the drop down 
							box, determine if you are going to tax shipping and
							  handling and then press 'Submit'.</li>
			  			</ul>
	  </blockquote>
    </blockquote>
    <p><a href="#toc">Return to Index</a></p>
    <hr>
  
    <p><a name="activate"></a>3.0 Activate/Deactivate the Cart</p>
    <blockquote>
      <p>3.01 This should be pretty easy.. If the text displays &quot;Shop is
        active&quot;
        that means that customers are allowed to shop and buy. If you want to
        temporarily turn the store off when you are making changes, you can press
        the &quot;Deactivate&quot;
        button to turn the store off. Press &quot;Activate&quot; when you are
        ready to turn the store back on. Note, the store will be &quot;inactive&quot; when
          first installed, you will have to &quot;activate&quot; it with this
          button.</p>
    </blockquote>
    <p><a href="#toc">Return to Index</a></p>
    <hr>
  
    <p><a name="templates"></a>4.0 Templates<br>
		Hint: pnRender actually looks at:<br>
		/your-site/themes/your-theme/templates/modules/pncommerce
		for templates before looking for templates in the module directory.
		<br>
		If you need to create 'custom' templates, you may want to put them in the directory
		 under your theme as this will allow you to keep the core versions of the pnCommerce 
		 files in the module itself. Now, when you update the pnCommerce files to newer versions, 
		 your custom templates will not be over-written or lost.
		Thanks to Frank for this hint..</p>
    <blockquote>
      <p> <a name="401"></a>4.01 Using and Editing Templates</p>
      <ul>
        <li> What is a template? Templates are html-snippets mixed with pncommerce
                      tags for item and category information. You can customize
          the templates that
                          are furnished with the pnCommerce module package, or
          create your own for that
                      'individual' look.</li>
        <li>Templates can be found in /modules/pncommerce/templates<br>
          You can either copy and paste the code into the space provided
                        in the block, or just call the file. Calling the file
              is done like this: dynamic1.htm <br>
          As long as they template named dynamic1.htm is in the correct
                        template directory.</li>
        <li>This will allow you to modify your blocks with an html editor and
                    ftp them to your site. This method is much faster than editing
            each block
                    from within PN.</li>
        <p>
			The following text is a enhanced version of the existing introduction.
			  It's obvious that there will be some parts that will look familiar
			  for some of you that read the                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "old" article. </p>
        <p>
			Now I will give you a short introduction, how you can create or change
			  templates to make them look like you want.  I've choosen an easy
			  approach to make everything as clear as possible and understandable
			  for non-programmers.</p>
		<p>			  
			Please excuse the simplifications here and there, but I had to simplify
			some things to reach this goal.
		</p>
        <p>
			I suggest to only edit templates in the beginning and not create
			your own templates, until you get a feeling for it.  Don't be shy,
			you can't break something. When the template is not working, you
			can try to fix it or restore it 	from the pnCommerce archive</p>
			
			<h2><span style="font-weight: bold;">How can I create templates?</span></h2>
			You can use your favourite HTML editor and design the html code. After that
			you	add special tags that get replaced by the real data, then<br>
			the page is shown. There are two different tag types:<br>
<ul>
  <li>global tags<br>
  </li>
  <li>local tags<br>
  </li>
</ul>
			The "global tags" are tags that call for example PostNuke or pnCommerce functions
			and return some data. 	A simple example is the "pnml"function.<br>
			"pnml" just reads a given define and shows the correct translation from the
			lang files.<br>
			This looks like this:<br>
&lt;!--[pnml name='_SUBMIT']--&gt;<br>
Result:<br>
Submit<br>
<br>
These tags can be used everywhere, even inside of html tags. You can set a multilanguage "alt-tag" for
images with this for example. There will be<br>a documentation later for all
pnRender tags and we will provide a documentation for our tags too.
<br><br>
There are a lot of tags in the group of global tags, for example the
tags for flow-control inside of the template.
<br>
There are loops, that you can use to show lists, or If-Then-Else tags
to show certain data, when certain conditions are true.
<br><br>
"Local tags" represent the variables in pnRender. They exist only in
special templates, so you have to look in the documentation which local tags<br>are
provided by the module for this template.
<br>
In the admin section of pnCommerce for example, we have a link to the corresponding
part in the documentation. The chapter is set for each template we call there,
so you always see the right link there.
<br>
The tag looks like this &lt;!--[$Chapter]--&gt; in the template.
<br><br>
<pre>&lt;td align="center"&gt; <br>[ &lt;a href="#" ONCLICK=<br>"manualwindow('modules/pncommerce/pndocs/lang/eng/manual/manual.html#&lt;!--[$Chapter]--&gt;'<br>,'Event','status=yes,scrollbars=yes,resizable=yes,width=600,height=650')"&gt;<br>&lt;!--[ pnml name='_PNCMANUAL' ]--&gt;&lt;/a&gt; ] <br>&lt;/td&gt;</pre>
<br>
It looks really simple, when you ignore the strange html code. <br>
<i>A short note for interested readers: On the Smarty homepage
(remember pnRender is a extension of Smarty) at
<a href="http://smarty.php.net">http://smarty.php.net</a>, you will
notice that the tags look different. PostNuke uses a different set of
delimiters, the {...} hast to be replaced by
&lt;!--[...]--&gt; </i><br>
<h2>Comments</h2>
To create templates that you can edit even after months, you should
consider the usage of comments inside the code, so you can read why you
did something. These comments are visible in the htmlcode later as html
comments, so you can also use this for debugging.<br>
The syntax is quite simple:<br>
<pre>&lt;!--[* I am a booring comment *]--&gt;</pre>
The comments can also be multiline comments. You will see some of them
later. (A lot of examples are taken from the original documentation and
modified to fit our needs)<br>
<h2>Variables</h2>
The reason for the usage of templates is to change the look and feel of
modules with dynamic content. To reach this goal we need some kind of
technique to bring this "variable content" to the user. These
"containers" are called variables. They get replaced by their content
when the page is called. The example above used a variable called
$Chapter. (local tags are always variables)<br>
This was the easiest version of variables with "only" one value
(SingleValued). The content is strings like "I am a testtext" or
numbers like 1, 2 or 4.12345<br>
The numberformat is set by php, so be careful when you perform
calculations with them. There may occur some problems when you have
rational numbers. It's possible that the fraction is ignored and the
calculation result is wrong. These problems are extremely hard to find,
so please be careful there.<br>
There is also a second kind of variables. They can store more than one
value (MultiValued). These variables are called arrays. These arrays
look like tables in a database, the difference is that arrays can
contain arrays too and the content of these rows (like the datasets in
db-tables) can be referenced in with strings (or numbers).<br>
<span style="font-weight: bold;"><br>
Example:<br>
</span>1. SingleValued<br>
Chapter has the value "1", it's shown with the following line<br>
&nbsp;&lt;!--[ $Chapter ]--&gt;<br>
2. Array<br>
Assuming that the array is called row with the items (fields) called
field1, field2, field3. When you'd like to see the value of these
field, you can do this:<br>
&nbsp;&lt;!--[ $row.field1 ]--&gt;<br>
&nbsp;&lt;!--[ $row.field2 ]--&gt;<br>
&nbsp;&lt;!--[ $row.field3 ]--&gt;<br>
2. Arrays in Arrays<br>
This constellation will occur quite often, because it represents, in
it's simple form, a database table or result of a query with it's rows
and columns. <br>
Assuming there is an array called table with 3 rows that are refenced
by a running index beginning with 1. Every row has the fields field1,
field2 field3:<br>
&lt;!--[ $table.1.field1 ]--&gt; :: &lt;!--[ $table.1.field2
]--&gt; :: &lt;!--[ $table.1.field3 ]--&gt;<br>
&nbsp;&lt;!--[ $table.2.field1 ]--&gt; :: &lt;!--[ $table.2.field2
]--&gt; :: &lt;!--[ $table.2.field3 ]--&gt;<br>
&nbsp;&lt;!--[ $table.3.field1 ]--&gt; :: &lt;!--[ $table.3.field2
]--&gt; :: &lt;!--[ $table.3.field3 ]--&gt;<br>
Of course it's possible that there are arrays, in arrays, in arrays
(,...). You should always take a look at the documentation and play
with the arrays until everything is working as expected.<br>
<h2>Modifiers</h2>
There are functions that can alter the display of variables. These are
called modifiers.<br>
An example for modifies is pnVarPrepForDisplay. Technically, this is
just a call to the corresponding PostNuke API function to show only the
secure parts of the variable content.<br>
<br>
You can use modifiers in this way:<br>
&nbsp;&lt;!--[ $row.field1 | pnVarPrepForDisplay]--&gt;<br>
<br>
There are some modifiers, that can handle or need parameters. They are
simply added after the modifiers name seperated with ":" <br>
&nbsp;&lt;!--[ $row.field1 | samplemodifier:param1:param2:param3]--&gt;<br>
<br>
There are some basic modifiers that are available in every Smarty
installation. You can get a list here:<br>
<a href="http://smarty.php.net/manual/eng/language.modifiers.php">http://smarty.php.net/manual/eng/language.modifiers.php</a><br>
<span style="font-weight: bold;"><br>
Example</span><br>
<pre class="PROGRAMLISTING">&lt;!--[* uppercase the title *]--&gt;<br>&lt;h2&gt;&lt;!--[$titel|upper]--&gt;&lt;/h2&gt;<br><br>&lt;!--[* limit the text to 40 chars and append a "..." *]--&gt;<br>Text: &lt;!--[$text|truncate:40:"..."]--&gt;</pre>
<br>
<h2>Flow control</h2>
This part may be complicated for designers without programming
knowledge. I have to admit that you won't get around this little piece
of programming, but it's not as hard as it sounds in the first place.
You just need a little practise.<br>
<br>
<h3>If-Then</h3>
There are some situations, where you need to show data only when
certain conditions are true. For example, you'd like to show a detail
button only for registered users or when the amount of available
products reaches a low level, you can show a special notification image.<br>
With pnRender you can do this in this way:<br>
<br>
<pre>...<br>&lt;td&gt;<br>&nbsp; &lt;!--[if $item.ItemsOnStock == 0]--&gt;<br>&nbsp;&nbsp;&nbsp; &lt;img src='outofstock.png'&gt;<br>&nbsp; &lt;!--[else]--&gt;<br>&nbsp; &nbsp; &lt;!--[pnml name='_INSTOCK']--&gt;: &lt;!--[$item.ItemsOnStock]--&gt;<br>&nbsp; &lt;!--[/if]--&gt;<br>&lt;/td&gt;<br>...</pre>
So, the user can see the amount of items left, or a out of stock image.<br>
<br>
For this if statement, you can use different conditional qualifiers
like:<br>
<table border="1">
  <tbody>
    <tr>
      <td style="vertical-align: top;">Qualifier<br>
      </td>
      <td style="vertical-align: top;">Explaination<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">eq<br>
==<br>
      </td>
      <td style="vertical-align: top;">equal</td>
    </tr>
    <tr>
      <td style="vertical-align: top;">ne<br>
neq<br>
!==<br>
&lt;&gt;<br>
      </td>
      <td style="vertical-align: top;">not equal<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">gt<br>
&gt;<br>
      </td>
      <td style="vertical-align: top;">greater than<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">lt<br>
&lt;<br>
      </td>
      <td style="vertical-align: top;">less than<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">gte<br>
&gt;=<br>
      </td>
      <td style="vertical-align: top;">greater than equal<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">lte<br>
&lt;=<br>
      </td>
      <td style="vertical-align: top;">less than equal<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">is even<br>
is not odd<br>
      </td>
      <td style="vertical-align: top;">is even<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">is odd<br>
is not even<br>
      </td>
      <td style="vertical-align: top;">is odd<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">not<br>
      </td>
      <td style="vertical-align: top;">not (swaps the boolean result,
example: not true= false) <br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">mod<br>
      </td>
      <td style="vertical-align: top;">modulo, <br>
Example: 3 mod 2 =1, 2 mod 3 = 2, <br>
15 mod 3 =0, ...<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">div by<br>
      </td>
      <td style="vertical-align: top;">is divisible<br>
it's the same like&nbsp; ((... mod &lt;number&gt;) ==0)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">even by<br>
      </td>
      <td style="vertical-align: top;">even by (see example later)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">odd by<br>
      </td>
      <td style="vertical-align: top;">obb by (see example later)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">or<br>
|| (two vertical lines, not a small L)<br>
      </td>
      <td style="vertical-align: top;">or, is used to combine two
statements<br>
True when one of both statements is true<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">and<br>
&amp;&amp;<br>
      </td>
      <td style="vertical-align: top;">and, is used to combine two
statements<br>
true when both statements are true<br>
      </td>
    </tr>
  </tbody>
</table>
<br>
There are situations, where you need to combine two or more statements.
You should use parantheses to seperate them.<br>
<pre>If (I am I) and (you are you) then are_we_we</pre>
You can prevent misinterpretations in PHP.<br>
There are some combinations that contain a high potential for problems:<br>
==&gt; A and B or C<br>
This is true, when C is true or A and B are true at the same time.<br>
==&gt; A and (B or C)<br>
This is true, when A is true and B or C (or both)<br>
<br>
<h3>Examples:</h3>
<pre class="PROGRAMLISTING">&lt;!--[if $name eq "Fred"]--&gt;<br>	Mister,<br>&lt;!--[elseif $name eq "Wilma"]--&gt;<br>	Ma'am,<br>&lt;!--[else]--&gt;<br>	Hello,<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[if $name eq "Fred" or $name eq "Wilma"]--&gt;<br>	Yabadabadoo<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* The following is not working because all <br>       qualifiers have to be seperated by a " " (space)*]--&gt;<br>&lt;!--[if $name=="Fred" || $name=="Wilma"]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* Parantheses are valid *]--&gt;<br>&lt;!--[if ( $amount &lt; 0 or $amount &gt; 1000 ) and $volume &gt;= #minVolAmt#]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* you can even use php functions *]--&gt;<br>&lt;!--[if count($var) gt 0]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* is var even or odd? *]--&gt;<br>&lt;!--[if $var is even]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br>&lt;!--[if $var is odd]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br>&lt;!--[if $var is not odd]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* test if var is divisible by 4 *]--&gt;<br>&lt;!--[if $var is div by 4]--&gt;<br>	...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* is var even based by 2, 0=even, <br>       1=even, 2=odd, 3=odd, 4=even, <br>       5=evene, usw. *]--&gt;<br>&lt;!--[if $var is even by 2]--&gt;<br>&nbsp;...<br>&lt;!--[/if]--&gt;<br><br>&lt;!--[* 0=even, 1=even, 2=even, 3=odd, <br>       4=odd, 5=odd, usw. *]--&gt;<br>&lt;!--[if $var is even by 3]--&gt;<br>&nbsp;...<br>&lt;!--[/if]--&gt;</pre>
<br>
<h3>Loops</h3>
Now you are able to hide or show certain things depending on the
content of variables. The next step is to show arrays in templates in a
flexible way. It's not possible to use the way from the first chapter,
where we referenced all rows by hand. We need something far more
flexible here.<br>
An example is a list of products that should be displayed in a table.
You don't know how many products there will be, but you know the fields
for every product. (to be exact, you don't need to know them too, you
can use the same technique for the product properties)<br>
<br>
<span style="font-weight: bold;">Foreach loop</span><br>
<pre>...<br>&lt;table&gt;<br>&lt;!--[foreach item=item from=$itemlist]--&gt;<br>&lt;tr&gt;<br>&nbsp; &lt;td&gt;<br>&nbsp; &nbsp; Itemname: &lt;!--[$item.Name]--&gt;<br>&nbsp; &lt;/td&gt;<br>&nbsp; &lt;td&gt;<br>&nbsp; &nbsp; &lt;!--[if $item.ItemsOnStock == 0]--&gt;<br>&nbsp; &nbsp; &nbsp; &lt;img src='outofstock.png'&gt;<br>&nbsp; &nbsp; &lt;--[else]--&gt;<br>&nbsp; &nbsp; &nbsp; &lt;!--[pnConstant constant='_INSTOCK']--&gt;: &lt;!--[$item.ItemsOnStock]--&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--[/if]--&gt;<br>&nbsp; &lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;!--[/foreach]--&gt;<br>&lt;/table&gt;<br>...</pre>
<br>
This loop "loops" through the whole array and assignes in each pass the
actual row to the variable $Item.<br>
This concept may sound a little bit strange if you are not used to it.
When you have used this loop in some templates you will learn very
fast, how and where you can use them.<br>
There is also the possibility to add a "else" statement that is
executed when there are no elements in the array.<br>
When you want to know the string of number that referrs to the row in
the table, you can add a additional parameter "key":<br>
<pre>...<br>&lt;table&gt;<br>&lt;!--[foreach key=id item=item from=$itemlist]--&gt;<br>&lt;tr&gt;<br>&nbsp; &lt;td&gt;<br>&nbsp; &nbsp; itemnumber: &lt;!--[$id]--&gt;<br>&nbsp; &lt;/td&gt;<br>&nbsp; &lt;td&gt;<br>&nbsp; &nbsp; itemname: &lt;!--[$item.Name]--&gt;<br>&nbsp; &lt;/td&gt;<br>&nbsp; &lt;td&gt;<br>&nbsp; &nbsp; &lt;!--[if $item.ItemsOnStock == 0]--&gt;<br>&nbsp; &nbsp; &nbsp; &lt;img src='outofstock.png'&gt;<br>&nbsp; &nbsp; &lt;--[else]--&gt;<br>&nbsp; &nbsp; &nbsp; &lt;!--[pnConstant constant='_INSTOCK']--&gt;:&lt;!--[$item.ItemsOnStock]--&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--[/if]--&gt;<br>&nbsp; &lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;!--[/foreachelse]--&gt;<br>&nbsp; &lt;tr&gt;&lt;td&gt;No items in table&lt;/td&gt;&lt;/tr&gt;<br>&lt;!--[/foreach]--&gt;<br>&lt;/table&gt;<br>...<br></pre>
<br>
<span style="font-weight: bold;">Section loop</span><br>
<br>
Section is the second type of loops. It's similar to the foreach loop,
but it offers slightly different options. I think the difference will
be obvios by these examples:<br>
<br>
<span style="font-weight: bold;">Examples:</span>
<pre class="PROGRAMLISTING">&lt;!--[* this example will print out all the values of the $custid array *]--&gt;<br>&lt;!--[section name=customer loop=$custid]--&gt;<br>	id: &lt;!--[$custid[customer]]--&gt;&lt;br&gt;<br>&lt;!--[/section]--&gt;<br><br>OUTPUT:<br><br>id: 1000&lt;br&gt;<br>id: 1001&lt;br&gt;<br>id: 1002&lt;br&gt;<br><br><br>&lt;!--[* the loop variable only determines the number of times to loop.<br>   you can access any variable from the template within the section.<br>   This example assumes that $custid, $name and $address are all<br>   arrays containing the same number of values *]--&gt;<br>&lt;!--[section name=customer loop=$custid]--&gt;<br>	id: &lt;!--[$custid[customer]]--&gt;&lt;br&gt;<br>	name: &lt;!--[$name[customer]]--&gt;&lt;br&gt;<br>	address: &lt;!--[$address[customer]]--&gt;&lt;br&gt;<br>	&lt;p&gt;<br>&lt;!--[/section]--&gt;<br><br>OUTPUT:<br><br>id: 1000&lt;br&gt;<br>name: John Smith&lt;br&gt;<br>address: 253 N 45th&lt;br&gt;<br>&lt;p&gt;<br>id: 1001&lt;br&gt;<br>name: Jack Jones&lt;br&gt;<br>address: 417 Mulberry ln&lt;br&gt;<br>&lt;p&gt;<br>id: 1002&lt;br&gt;<br>name: Jane Munson&lt;br&gt;<br>address: 5605 apple st&lt;br&gt;<br>&lt;p&gt;<br><br><br>&lt;!--[* the name of the section can be anything you like,<br>   and it is used to reference the data within the section *]--&gt;<br>&lt;!--[section name=mydata loop=$custid]--&gt;<br>	id: &lt;!--[$custid[mydata]]--&gt;&lt;br&gt;<br>	name: &lt;!--[$name[mydata]]--&gt;&lt;br&gt;<br>	address: &lt;!--[$address[mydata]]--&gt;&lt;br&gt;<br>	&lt;p&gt;<br>&lt;!--[/section]--&gt;<br><br><br><br>&lt;!--[* sections can be nested as deep as you like. With nested sections,<br>   you can access complex data structures, such as multi-dimensional<br>   arrays. In this example, $contact_type[customer] is an array of<br>   contact types for the current customer. *]--&gt;<br>&lt;!--[section name=customer loop=$custid]--&gt;<br>	id: &lt;!--[$custid[customer]]--&gt;&lt;br&gt;<br>	name: &lt;!--[$name[customer]]--&gt;&lt;br&gt;<br>	address: &lt;!--[$address[customer]]--&gt;&lt;br&gt;<br>	&lt;!--[section name=contact loop=$contact_type[customer]]--&gt;<br>		&lt;!--[$contact_type[customer][contact]]--&gt;: &lt;!--[$contact_info[customer][contact]]--&gt;&lt;br&gt;<br>	&lt;!--[/section]--&gt;<br>	&lt;p&gt;<br>&lt;!--[/section]--&gt;<br><br><br>OUTPUT:<br><br>id: 1000&lt;br&gt;<br>name: John Smith&lt;br&gt;<br>address: 253 N 45th&lt;br&gt;<br>home phone: 555-555-5555&lt;br&gt;<br>cell phone: 555-555-5555&lt;br&gt;<br>e-mail: john@mydomain.com&lt;br&gt;<br>&lt;p&gt;<br>id: 1001&lt;br&gt;<br>name: Jack Jones&lt;br&gt;<br>address: 417 Mulberry ln&lt;br&gt;<br>home phone: 555-555-5555&lt;br&gt;<br>cell phone: 555-555-5555&lt;br&gt;<br>e-mail: jack@mydomain.com&lt;br&gt;<br>&lt;p&gt;<br>id: 1002&lt;br&gt;<br>name: Jane Munson&lt;br&gt;<br>address: 5605 apple st&lt;br&gt;<br>home phone: 555-555-5555&lt;br&gt;<br>cell phone: 555-555-5555&lt;br&gt;<br>e-mail: jane@mydomain.com&lt;br&gt;<br>&lt;p&gt;<br><br><br><br>&lt;!--[* This is an example of printing an associative array<br>   of data within a section *]--&gt;<br>&lt;!--[section name=customer loop=$contacts]--&gt;<br>	name: &lt;!--[$contacts[customer].name]--&gt;&lt;br&gt;<br>	home: &lt;!--[$contacts[customer].home]--&gt;&lt;br&gt;<br>	cell: &lt;!--[$contacts[customer].cell]--&gt;&lt;br&gt;<br>	e-mail: &lt;!--[$contacts[customer].email]--&gt;&lt;p&gt;<br>&lt;!--[/section]--&gt;<br><br><br>OUTPUT:<br><br>name: John Smith&lt;br&gt;<br>home: 555-555-5555&lt;br&gt;<br>cell: 555-555-5555&lt;br&gt;<br>e-mail: john@mydomain.com&lt;p&gt;<br>name: Jack Jones&lt;br&gt;<br>home phone: 555-555-5555&lt;br&gt;<br>cell phone: 555-555-5555&lt;br&gt;<br>e-mail: jack@mydomain.com&lt;p&gt;<br>name: Jane Munson&lt;br&gt;<br>home phone: 555-555-5555&lt;br&gt;<br>cell phone: 555-555-5555&lt;br&gt;<br>e-mail: jane@mydomain.com&lt;p&gt;<br><br><span
 style="font-family: sans-serif;"><br>Now we are going to learn how we can implement a "For-Next loop". This is a loop with a variable that starts with a selected value and is increased by a given amount (default is 1) in every step until the endvalue is reached.<br></span><br></pre>
<pre class="PROGRAMLISTING">&lt;!--[section name=countervar start=5 loop=10]--&gt;<br>	&lt;!--[$countervar]--&gt;&lt;br&gt;<br>&lt;!--[/section]--&gt;<br>Output:<br>5<br>6<br>7<br>8<br>9<br>10<br></pre>
These examples don't show everything that "section" has to offer. This
text is only a short introduction, so please visit&nbsp; <a
 href="http://smarty.php.net">http://smarty.php.net</a> for further
informations.<br>
<h2>Including of files</h2>
<span style="font-weight: bold;">Templates</span><br>
As mentioned in one of the first chapters, you can include files with a
simple include statement.<br>
What happens, when you do this? It's very simple. It's the same result,
when you copy the text of the included template and copy it to the
place of the include statement.<br>
We did this with headers and footers in the admin and user section in
pnCommerce.<br>
<pre>&lt;!--[include file="subtemplate.html"]--&gt;<br><br></pre>
<h2>Examples of pnRender Tags<br>
</h2>
<h3>pnimg</h3>
Parameter:<br>
<table cellpadding="2" cellspacing="2" border="1">
  <tbody>
    <tr>
      <td style="vertical-align: top;">src<br>
      </td>
      <td style="vertical-align: top;">Filename (without path)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">modname<br>
      </td>
      <td style="vertical-align: top;">Name of the module, you'd like
to fetch the image from,
optional, default is the current module<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">width<br>
      </td>
      <td style="vertical-align: top;">optional, the width of the image<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">height<br>
      </td>
      <td style="vertical-align: top;">optional, the height of the image<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">alt<br>
      </td>
      <td style="vertical-align: top;">optional, the alternative tag
for the image<br>
      </td>
    </tr>
  </tbody>
</table>
<br>
This tag can be used as a flexible way to show images in the template.
The big advantage of this tag is that you can have theme and language
depending images.<br>
There is a special search order where these images are expected:<br>
<br>
<ol>
  <li>themes/$theme/templates/modules/$modulname/images/$lang/$imagename</li>
  <li>themes/$theme/templates/modules/$modulname/images/$imagename</li>
  <li>modules/$modulename/pnimages/$lang/$imagename</li>
  <li>modules/$modulname/pnimages/$imagename</li>
</ol>
<br>
The "variables" are replaced by the right values of course.<br>
<br>
<br>
<span style="font-weight: bold;">Example:</span><br>
&lt;!--[pnimg src="heading.gif" ]--&gt;<br>
<span style="font-weight: bold;">Output:</span><br>
&lt;img src="modules/Example/pnimages/eng/heading.gif" alt=""
width="261" height="69"&nbsp; /&gt;<br>
<br>
<span style="font-weight: bold;">Example:</span> <br>
&lt;!--[pnimg src="heading.gif" width="100" border="1" alt="foobar"
]--&gt;<br>
<span style="font-weight: bold;">Output</span>:&nbsp; <br>
&lt;img
src="themes/ExampleTheme/templates/modules/Example/images/heading.gif"
width="100" border="1" alt="foobar"&nbsp; /&gt;<br>
<br>
<h3><span style="font-weight: bold;">pnml</span></h3>
<h3><span style="font-weight: bold;"></span></h3>
Parameter:<br>
<table cellpadding="2" cellspacing="2" border="1">
  <tbody>
    <tr>
      <td style="vertical-align: top;">name<br>
      </td>
      <td style="vertical-align: top;">Name of the define<br>
      </td>
    </tr>
  </tbody>
</table>
<br>
This tag has been used quite often in examples above. It's used to have
multilanguage modules. The define is replaced by the correct
translation from the language files. These are located in the
pnlang/$language/ directories in the module. All defines start with a _
(underscore), but we, the pnCommerce Team decided to add a unique
prefix to prevent collisions between our defines and for example
PostNuke defines. So all pnCommerce defines start with "_PNC_" .<br>
<span style="font-weight: bold;"><br>
Example:</span> <br>
&lt;!--[pnml name="_PNC_INEEDMOREBEER"]--&gt;<br>
<span style="font-weight: bold;">Output</span>:&nbsp; <br>
I need more beer<br>
<span style="font-style: italic;">Or when german is selected:</span><br>
Ich brauche mehr bier<br>
<h2>Fine</h2>
This Introduction presents only a small part of the possibilities that
pnRender/Smarty offers to you. Smarty is almost as powerfull as PHP is.
But you don't need to use it, that's the advantage of it. We will
provide a list of tags and modifiers, when we publish the first
release. We are also working on a list of provided local variables for
each template.<br>
<br>
I hope that this introduction was understandable and offered a small
glance on the new way of generating module output that will be the
future in PostNuke. When you are interested in further informations,
please have a look at <a href="http://smarty.php.net">http://smarty.php.net</a>
and the PostNuke documentation for pnRender tags. There you can find
the complete documentation with all informations. (But it's very
technical)<br>
<br>
<span style="font-style: italic;">Credits: I "borrowed" a lot of
examples from the original documentation at http://smarty.php.net,
thank you!</span>
      </ul>

      <p><a name="402"></a>4.02 Delete a Template.</p>
      <ul>
        <li> Clicking on the box and pressing the 'Delete' button will delete
          the Template that is shown above.. </li>
      </ul>
    </blockquote>

    <p><a href="#toc">Return to Index</a></p>
    <hr>

    <p><a name="reports"></a>5.0 Reports: </p>

    <blockquote>
      <p><a name="501"></a>5.01 Edit by Category Tree</p>

      <ul>
        <li> This will allow you do drop down and expand categories and then
          edit either the category iteself or the product within a category. </li>
      </ul>

      <p><a name="502"></a>5.02 Future Link</p>
      <p><a name="503"></a>5.03 Future Link</p>
      <p><a name="504"></a>5.04 Statistics</p>
      <ul>
        <li> This will show various statistics for your sales.</li>
      </ul>
	  
      <p><a name="505"></a>5.05 PNC Core Version File Numbers</p>
      <ul>
        <li>This display is primarily for debugging purposes.</li>
        <li>It displays the pnCommerce file names, author, file version, file
          date and the size of the file in bytes.</li>
        <li>All files shown here are located in: /modules/pncommerce</li>
      </ul>
	  	  
      <p><a name="506"></a>5.06 Future Link</p>	  
	   
    </blockquote>

    <p><a href="#toc">Return to Index</a></p>
    <hr>
  
    <br>
    <a name="categories"></a>6.0 Categories:  
    <blockquote>
      <p><a name="601"></a>6.01 Add a Category</p>
      <ul>
        <li> Add a Category: Create a new Category of products. Ie: Movies, Music
          CD's, etc. </li>
        <li> Category Name: This is the displayed name of the Category. Ie: Movies,
          Music CD's, etc.</li>
        <li> Parent Category: Displays a list of existing Categories, select
          the parent category if you want to use nested sub-categories. </li>
        <li> Select Shipping Method: Displays a list of all available shipping
          methods. To disable any of these, simply drop the appropriate file
          from the &quot;/pn-commerce/shipmethod&quot; folder.  Options for Domestic
          and International (if not disabled) rates are available. Shipping Methods
          available with pn-commerce v0.92.2 are:
				  <blockquote>
                  	<p>
				    	Flat Rate for entire order: a single shipping rate is
				    	  applied regardless of the order contents. <br>
	                	Flat Rate Per Item: a single rate is applied for each
	                	item in the order. <br>
                    	Incremental Rate: rate 1 is charged for the first item
                    	in the order, and rate 2 is added for each additional
                    	item. <br>
                    	Shipping determined Per Item: The shipping charge will
                    	be set in the Item definition page. 
					</p>
                  </blockquote>
        </li>
        <blockquote>
          <p> 
		  		Postpaid: no additonal shipping charges will be applied. It is
		  		  assumed that you have the shipping costs built into the price
		  		  of the products. 
		  </p>
        </blockquote>
        <li>Warning! As of pnCommerce v0.80a, there may be some difficulties
          if you try to use different shipping charge methods for different categories,
                              or when using one shipping method with many categories.
              There are so many
                              possibilities
                                it has become difficult to test all the combinations.
              However, this is a priority task to sort out for the development
          team. However, using multiple
                      categories may provide unstable results. </li>
        <li>The safest choices are:<br>
          Have two categories: one Postpaid and one any other method<br>
          Have all categories be determined Per Item <br>
          Upload an Image: pncommerce allows the admin to upload images. <br>
          Make Category Invisible: Disables the category from inclusion in
                            the Catalog pages. </li>
      </ul>
      
	  <p><a name="602"></a>6.02 Edit a Category.</p>
      
	  <ul>
        <li> This is where you edit a Category's properties: this is similar
          to &quot;Add  a Category&quot;. Refer to <a href="#601">6.01 Add A
          Category</a></li>
      </ul>
	  
	  <blockquote>
	  	 <a name="602a"></a>6.02.a Sorting Categories<br>
		 <ul>
		 	<li> When in the Category Edit, you can change the viewing sequence of categories.
		 	  1 would be the first category and 9999 would be the last category.
		 	  Just enter the viewing order that you want. </li>
	        <li>When first installing the RC2 files, all sequence numbers will be
	          set to 9999. This is the default sequence. Change the numbering
	          order to suit your needs.</li>
		 </ul>
	  </blockquote>
	  
      <p><a name="603"></a>6.03 Category Errors.</p>
      <ul>
        <li> Category Error: There is an error in the Category properties you
            entered. Possible errors:
          <ol>
            <li> Category Name was not filled in. All Categories must
                                                                    have a name
              assigned by the admin. </li>
            <li> A Category cannot be it's
                                                                      own Parent.
              The Category was assigned to be
                    it's own Parent, which is illogical. </li>
            <li> Shipping Method was not
                                                                        filled
              in. Each Category must be assigned
                      a shipping method. </li>
          </ol>
        </li>
      </ul>
      <p><a name="604"></a>6.04 Remove a Category.</p>
      <ul>
        <li> Remove a Category simply asks for confirmation to remove the selected
                Category. 
                This includes a list of the number of sub-categories and items
          in the selected category &amp; subcategories that will be removed by
          this action. <br>
        </li>
      </ul>
    </blockquote>
    <p><a href="#toc">Return to Index</a></p>
    <hr>
              
    <p><a name="products"></a>7.0 Products</p>
    <blockquote>
      <p><a name="701"></a>7.01 Add a Product.</p>
	  <p>
	  <blockquote>
        		Add a product is where you create a new Item and define the Item's
        		  properties.<br>
      			The properties are grouped by general purpose. <br>
        		Main Item Properties:<br>
        		Product Number (SKU): This is the SKU of the Item. (SKU stands
        		for &quot;stock-keeping
                unit&quot; and is the unique identifier used to reference the
                product.) <br>
        		Price: The Price the Customer pays for the Item. This should
        		be entered without any sort  of currency units, just as a number.
        		The	Currency symbol entered in &quot;pn-commerce 
					Configuration&quot; will be used in the display. <br>
        		Tax Exempt: Select if the Item should be be exempt from
                        sales tax charges. Please check your particular tax laws
                        to find out which
        items need to have sales tax collected (for example, if you are selling
        services,
                        they
                    may
                      be exempt from collecting sales tax.) You can set the default
        to be either on
                        or off in &quot;pn-commerce Configuration&quot;. <br>
        Select a Category: Select the Category associated with
                        this Item. For Item creation, this will be pre-set based
                        on the selection
        made in &quot;pn-commerce
                        Manager&quot;. <br>
        Description: A description for the Item. <br>
        Item Quantity Properties:<br>
        Quantity Available: Enter a numeric quantity to let pn-commerce track
        your Inventory. When Quantity reaches 0 (zero), Customers will
        not be able to add the Item to their Cart, but will get an &quot;Out
        of Stock&quot; message. <br>
        Ignore Quantity: When checked, pn-commerce will not track Inventory Quantities,
                        so the Items will always be available to add to their
        Cart, and an &quot;Out
                        of Stock&quot; message will never be displayed. Defaults
                        on. <br>
        Postpaid: no shipping charge. <br>
        Item Image Properties: 'Send this file' will let you upload an image
        file associated with the Item. Pncommerce supports jpg, jpeg,
        png, bmp and gif. Image files must be 5000 bytes or less in size. If
        you are using any
                    thumbnail
                        images in your side blocks, I would suggest that you
        make the tn's 100 pixels in width or less. <br>
        Select a Thumbnailing Method: You can either upload a thumbnail, automatically
                        create a thumbnail, or opt to not have a thumbnail. These
        options can be disabled in &quot;pn-commerce Configuration&quot; if you
        know you will never use a particular option. <br>
        Item Per-Category Properties:<br>
        Here you can set values for Owner-Created Properties. See 4.06 <p></p>
    </blockquote>
	
    <p>
		<a name="702"></a>7.02 Edit a Product.
	</p>
	<blockquote>
      Edit an Item is where you can modify an existing Item's properties.<br>
      The properties are grouped by general purpose. This is identical to &quot;Add
                      an Item&quot; except now the fields are filled in <br>
      Main Item Properties:<br>
      Product Number (SKU): This is the SKU of the Item. (SKU stands for &quot;stock-keeping
                      unit&quot; and is the unique identifier used to reference
                      the product.) <br>
      Price: The Price the Customer pays for the Item. This should be entered
                      without any sort of currency units, just as a number. The
      Currency symbol entered
                      in &quot;pn-commerce Configuration&quot; will be used in
                      the display. <br>
      Tax Exempt: Select if the Item should be be exempt from sales tax charges.
                      Please check your particular tax laws to find out which
      items need to have sales tax collected (for example, if you are selling
      services,
                      they
                  may
                    be exempt from collecting sales tax.) You can set this to
      be default on or off
                      in &quot;pn-commerce Configuration&quot;. <br>
      Select a Category: Select the Category associated with this Item. <br>
      Description: A description for the Item. <br>
      Item Quantity Properties:<br>
      Quantity Available: Enter a numeric quantity to let pn-commerce track your
                      Inventory. When Quantity reaches 0 (zero), Customers will
      not be able to add the Item to their Cart, but will get an &quot;Out of
      Stock&quot; message. <br>
      Ignore Quantity: When checked, pn-commerce will not track Inventory Quantities,
                      so the Items will always be available to add to their Cart,
      and an &quot;Out
                      of Stock&quot; message will never be displayed. Defaults
                      on. <br>
      Postpaid: no shipping charge. <br>
      Item Image Properties:<br>
      Send this file will let you upload a an image file associated with the
                  Item. <br>
      Select a Thumbnailing Method: You can either upload a thumbnail, automatically
                      create a thumbnail, or opt to not have a thumbnail. These
      options can be disabled in &quot;pn-commerce Configuration&quot; if you
      know you will never use a particular option. <br>
      Item Per-Category Properties:<br>
      Here you can set values for Owner-Created Properties. <p></p>
	  </blockquote>
	  
    <p>
		<a name="703" id="703"></a>7.03 Item Error.
	</p>
      <blockquote>
	  Item Error: There is an error in the Item properties you entered. Possible
	    errors: <br>
      Item SKU was not filled in. All Items must have an SKU assigned by the
      admin. <br>
      Item Name was not filled in. All Items must have a Name assigned by the
      admin. <br>
      Item Cost was not filled in. All Items must have a Cost assigned by the
      admin. <br>
      Item Category was not filled in. All Items must have be assigned to a Category. <br>
      		Please go back and update, there is already an item with the SKU:
      		You have attempted to create an Item with a duplicate SKU,  or change
      		the SKU of an existing Item to the SKU of another existing Item. <br>
      There was a problem with your files. Item Images or Thumbnails must be
      jpg files and be smaller than 50000 bytes. <br>
      If you are receiving one of the above error messages erroneously, you should
      probably check with your sysadmin to determine if this is being affecting
      by one of the above settings. There is a workaround (you can try this even
      if you can't 
			contact your sysadmin): in admin.php, edit	line 1459 to remove the
      text: ENCTYPE=\&quot;multipart/form-data\&quot; Refresh
            the browser page and try to re-submit the values. Unfortunately,
      this means you will be unable to upload images via the web interface. The
      workaround for this is to correctly rename the image files and FTP
            them to the /product_images folder. The files need to be named .jpg
      and .jpg, where is the ItemID. The ItemID can found two easy ways. One
      is to use phpMyAdmin, look in the nuke_pn-commerce_items
            table, find the item and look at its associated ItemID field. The
      other option is to go to the catalog page for the Item, look in the URL
      and locate the segment &quot;&amp;IID=...&quot; where &quot;...&quot; is
            the ItemID value. This solution has worked for several installations;
      however, there may still be unresolved issues with other server or PHP
      configurations. The pn-commerce Development Team does have a task to 
			 revise the Item Add &amp; Edit pages to notify check for these configuration
			 issues and notify the user in advance. <p></p>
	</blockquote>
					  
    <p>
		<a name="704"></a>7.04 Remove a Product.
    </p>
	<blockquote>
		Remove an Item simply asks for confirmation to remove the selected Item. 
	</blockquote>
  
    <p>
		<a name="705"></a>7.05 Final Value Modification.
	</p>
	<blockquote>
      	Final Value Modification sets the values for functions that modify the
      	  final total of the customer's shopping cart. There are two Final Value
      	  Modification functions included with pn-commerce <p></p>
	</blockquote>
 
    <p>
		<a name="706" id="706"></a> 7.06 Handling and Sales Tax. 
	</p>
	<blockquote>
      Final Value Modification sets the values for functions that modify the
                  final total of the customer's shopping cart. There are two
      Final Value Modification
                      functions included with pn-commerce v0.xx: Handling and
      Sales Tax. <br>
      Handling: Handling Charge is a single value added to the final value of
                  the customer's order. <br>
      Sales Tax: You can establish any number of Sales Tax conditions.
                  The following is a list of the properties for each condition.<br>
      Name: Name is the displayed Name of the Final Value Modification
                      displayed in the customer's receipt (for example: &quot;CA
                      Sales Tax&quot;.) <br>
      Amount: Amount is the decimal number multiplied to the
                      subtotal of the customer's order (for example: for 8.65%
                      sales tax,
      enter &quot;0.0865&quot;.) <br>
      Where: There are two possibilities for sales tax conditions: &quot;State&quot; and &quot;Country&quot;.
                      State should be used for State Sales Tax, and Country for
      VAT. The applicable state or country name should be entered into the &quot;=&quot; box.
                  (for example: for CA Sales Tax, enter &quot;WHERE State = CA&quot;.) <br>
      Tax Shipping &amp; Handling: Check if your applicable sales tax laws require
                      that you collect sales tax on shipping &amp; handling charges. <br>
      It is recommended that the Store Owner contact their own
                      tax advisor to determine their specific requirements for
                      collecting sales
      tax. If the existing
                  Sales Tax conditions don't meet your needs as a Store Owner,
      please contact the
                      pn-commerce Development Team (main support site) (US Support
      site) and tell us your requirements.. <br>
	 </blockquote>
	  
	<p>
      	<a name="707" id="707"></a>7.07 Select Shipping Method
	</p>
    <blockquote>
	  Displays a list of all available shipping methods. To disable any of these,
                      simply drop the appropriate file from the &quot;/pn-commerce/shipmethod&quot; folder.
                      Options for Domestic and International (if not disabled)
                      rates are available. <br>
      Flat Rate for entire order: a single shipping rate is applied
                      regardless of the order contents. <br>
      Flat Rate Per Item: a single rate is applied for each item
                      in the order.<br>
      Incremental Rate: rate 1 is charged for the first item
                      in the order, and rate 2 is added for each additional item. <br>
      Shipping determined Per Item: The shipping charge will
                      be set in the Item definition page.<br>
      Postpaid: no shipping charge. <p></p>
	  
	  </blockquote>

    <p><br>
      <a href="#toc">Return to Index</a></p>
    <hr>
              
    <p><a name="customermanagement"></a>8.0 Customer Management</p>
    <blockquote>
      <p><a name="801"></a>8.01 Search for a Customer</p>
      <ul>
        <li> You are allowed to search for any customer(s) that will match a
          string<br>
          of data that you ask for.
        </li>
        <li> You will then be allowed to either edit a matching customers data
          or<br>
          their orders.
          .<br>
        </li>
      </ul>
      </blockquote>
	
    <p><a href="#toc">Return to Index</a>
	              
      <hr>
              
        <p></p>
    <p><a name="custommodules"></a>9.0 Custom Modules :: Designed for 3rd party
      add-in modules for logging, maintenence, etc.</p>
    <blockquote>
      <p><a name="901"></a>9.01 Read and Manage Log Entries</p>
      <ul>
        <li> You are allowed to search &quot;User Errors&quot;, &quot;Admin Errors&quot;, &quot;General
                        Warnings&quot;, &quot;User
                        Warnings&quot;, &quot;Admin Warnings&quot; and &quot;Notices&quot; by
          the entire log or by a specific date(s).</li>
        <li> The two 'Action' flags allow you to 'read' or 'delete' the existing
                            log entries.<br>
        </li>
      </ul>
      </blockquote>
    <p><a href="#toc">Return to Index</a>
	              
      <hr>
              
        <p></p>
    <p><a name="misc"></a>10.0 Miscelaenous: </p>
    <blockquote>
      <p><a name="1001"></a>10.0.1 Time Date Format.<br>
        The following is a copy from<a href="http://php.net" target="_blank"> http://php.net </a><br>
        This will give developers an idea of how the times, dates, etc. are being
          display. </p>
      <p>date<br>
        (PHP 3, PHP 4, PHP 5) <br>
        date -- Format a local time/date<br>
        Description<br>
        string date ( string format [, int timestamp])</p>
      <p><br>
        Returns a string formatted according to the given format string using
                      the given integer timestamp or the current local time if
          no timestamp is given. In otherwords, timestamp is optional and defaults
          to the
                      value
          of time(). </p>
      <p>Note: The valid range of a timestamp is typically from Fri, 13 Dec 1901
                    20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are
        the dates that correspond to the minimum and maximum values for a 32-bit
        signed integer).
      On windows this range is limited from 01-01-1970 to 19-01-2038. </p>
      <p>To generate a timestamp from a string representation of the date, you
                    may be able to use strtotime(). Additionally, some databases
        have functions to convert their date formats into timestamps (such as
        MySQL's UNIX_TIMESTAMP
      function). </p>
      <p>Table 1. The following characters are recognized in the format parameter
        string</p>
      <blockquote>
        <p><strong>a</strong> -Lowercase Ante meridiem and Post meridiem am or
                      pm <br>
          <strong>A</strong> -Uppercase Ante meridiem and Post meridiem AM or
                      PM <br>
          <strong>B</strong> -Swatch Internet time 000 through 999 <br>
          <strong>d</strong> -Day of the month, 2 digits with leading zeros 01
                      to 31 <br>
          <strong>D</strong> -A textual representation of a day, three letters
                      Mon through Sun <br>
          <strong>F</strong> -A full textual representation of a month, such
                      as January or March January through December <br>
          <strong>g</strong> -12-hour format of an hour without leading zeros
                          1 through 12 <br>
          <strong>G</strong> -24-hour format of an hour without leading zeros
                          0 through 23 <br>
          <strong>h</strong> -12-hour format of an hour with leading zeros
                          01 through 12 <br>
          <strong>H</strong> -24-hour format of an hour with leading zeros
                          00 through 23 <br>
          <strong>i</strong> -Minutes with leading zeros 00 to 59 <br>
          <strong>I</strong> (capital i) -Whether or not the date is in daylights
                          savings time 1 if Daylight Savings Time, 0 otherwise. <br>
          <strong>j</strong> -Day of the month without leading zeros 1 to 31 <br>
          <strong>l</strong> (lowercase 'L') -A full textual representation of
                      the day of the week Sunday through Saturday <br>
          <strong>L</strong> -Whether it's a leap year 1 if it is a leap year,
                      0 otherwise. <br>
          <strong>m</strong> -Numeric representation of a month, with leading
                      zeros 01 through 12 <br>
          <strong>M</strong> -A short textual representation of a month, three
                      letters Jan through Dec <br>
          <strong>n</strong> -Numeric representation of a month, without leading
                      zeros 1 through 12 <br>
          <strong>O</strong> -Difference to Greenwich time (GMT) in hours Example:
                      +0200 <br>
          <strong>r</strong> -RFC 822 formatted date Example: Thu, 21 Dec 2000
                      16:01:07 +0200 <br>
          <strong>s</strong> -Seconds, with leading zeros 00 through 59 <br>
          <strong>S</strong> -English ordinal suffix for the day of the month,
                      2 characters st, nd, rd or th. Works well with j <br>
          <strong>t</strong>- Number of days in the given month 28 through 31 <br>
          <strong>T</strong> -Timezone setting of this machine Examples: EST,
                      MDT ... <br>
          <strong>U</strong> -Seconds since the Unix Epoch (January 1 1970 00:00:00
                      GMT) See also time() <br>
          <strong>w</strong> -Numeric representation of the day of the week 0
                      (for Sunday) through 6 (for Saturday) <br>
          <strong>W</strong> -ISO-8601 week number of year, weeks starting on
                      Monday (added in PHP 4.1.0) Example: 42 (the 42nd week
          in the year) <br>
          Y A full numeric representation of a year, 4 digits Examples: 1999
                      or 2003 <br>
          <strong>y</strong>- A two digit representation of a year Examples:
                      99 or 03 <br>
          <strong>z</strong> -The day of the year 0 through 366 <br>
          <strong>A</strong> -Timezone offset in seconds. The offset for timezones
                      west of UTC is always negative, and for those east of UTC
          is always positive. -43200 through
                        43200 <br>
        </p>
        <p>      Unrecognized characters in the format string will be printed
          as-is. The Z format will always return 0 when using gmdate(). </p>
      </blockquote>

<p> <a name="1002"></a>10.02 Importing Data from a CSV file</p>
			<ul>
					<li>If you have access to phpMyAdmin, it is real easy to upload an existing
							product database using a "comma delimited file" aka csv.</li>

					<li>The columns that you will need in your spreadsheet or db are:
					ItemID, ItemSKU, ItemName, ItemDescription, ItemCost, Category,
						ItemQuantity, IgnoreQuantity, QuantityIgnored, TaxExempt,
						VATID</li>

					<li>Export (or save-as) from your spreadsheet or db to a csv format.  Or
						if you want, create  your csv file (in ascii text) on
						your own allowing	one comma between each column.</li>

					<li>A typical file might look like this:<br>
					,KM7584,Book of Ages, This is a fantastic book designed for
						all readers,24.95,4,59,no,,,</li>

					<li>Notice the empty spaces at the beginning and the end of the above line.
						This means that  we are not inputting any data into that
						portion of the db. Obviously, 
					you may need to go back and edit this at a later time...
						 If you are importing  a large file, then I would highly
						suggest getting	the data right the
					first time.  It will make your life a lot easier...</li>

					<li>Now that you have your csv file all done, we need to access your database
						via phpMyAdmin. Most hosts will have it installed in
						their hosting package	for you. If not, 
					you can download it from http://www.phpmyadmin.net/home_page/</li>

					<li>Once you have accessed phpMyAdmin, click on nuke_pncommerce_items (shown
						on the left side of your screen) so that the items table
						is displayed on	the right side of 
					your screen.  Note, depending on who made your initial website
						db, it may not	have the word 'nuke' at the beginning...</li>

					<li>At the top of the screen that is now displaying the items table, you
						will see Structure, Browse, SQL, etc... Click on "SQL"</li>

					<li>At the bottom of the page you should see: "Insert data from a textfile
						into table"
					Click on this link.</li>

					<li>On the new page that has opened, select the csv file on your computer
						via the  'Browse' button, 'Replace table data with file'
						should have a check mark in 
					the box to the right, the box to the right of 'Fields terminated
						by' should  have a comma (,) in the box. You really do
						not have to worry	about any of
					the other fields on the page now.</li>

					<li>Click on 'Submit'.  Depending on how large your datafile is, it should
						take  between 1 second and maybe 30 seconds to input
						all of the data into	your db.</li>

					<li>Now click on 'Browse' and you should be able to see all of your data
						in the db now.. Make sure that you got everything in
						the right column.	If you didn't, then 
					delete all of the new lines that you have just installed
						and try it again.</li>

					<li>I have put files into pnCommerce databases that have exceeded 7,000
						lines 	in as little as 30 seconds doing it this way... </li>
			</ul>


<p> <a name="1003"></a>10.03 Exporting Data to a CSV file</p>

			<ul>
					<li>Exporting data to csv</li>

			</ul>

<p> <a name="1004"></a>10.04 SQL and how to use it </p>

			<ul>
					<li>sql</li>

			</ul>
	  
	  
      </blockquote>
    <p><br>
      <a href="#toc">Return to Index</a></p>
    <hr>
	            
    <p><a name="blocks" id="blocks"></a>11.0 Blocks</p>
    <blockquote>
      <p> <a name="1101"></a>11.01 Add a block</p>
      <ul>
        <li> The file for the right, center, and left sides is named &quot;pncommerce_item_block&quot;. </li>
        <li>The other pncommerce block is named &quot;pncommerce_basket_block&quot; which
                    can be set up as either right, center, or left and will show
          links if there is already something in the shopper's cart. </li>
        <li>To activate
                    either block, you will
                    have to go to, Administration :: Blocks. Then click on New
          Block. Create a new block using the block that you are creating from
          the
                    drop down menu in
                    PostNuke. </li>
        <li>The &quot;pncommerce_basket_block&quot; only needs to
                    be activated and saved to work. The &quot;pncommerce_item_block&quot; will
                    need some additional code input to display what you want.
                    You can enter in the html code (see 6.0
                    Templates) or you can start by using and/or modifying the
                    templates that are already furnished with the pncommerce
                    release. </li>
      </ul>
      <p><a name="1102"></a>11.02 Edit a block</p>
    
	  <p> <a name="1103"></a>11.03 Using templates</p>
      <ul>
        <li>Templates can be found in /modules/pncommerce/pntemplates<br>
          You can either copy and paste the code into the space provided in the
                                    block, or just call the file. Calling the
            file is done like this: dynamic1.html <br>
            As long as the template named dynamic1.htm is in the correct
                    template directory.</li>
        <li>This will allow you to modify your blocks with an html
                                      editor and
                                          ftp them to your site.
                                          This method is much faster than editing
            each block from within PN.</li>
      </ul>
    
	  <p> <a name="1104"></a>11.04 Comments Block<br>
	  		Please note that you will have to download the EZComments module
			before using these blocks . You can get the download and install
	  		  the 	current version from the following link:<br>
			<a href="http://lottasophie.sourceforge.net/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=17" target="_blank">http://lottasophie.sourceforge.net/modules.php?op=modload
			name=Downloads&amp;file=index&amp;req=getit&amp;lid=17</a><br><br>
 			You will also have to download the current version of the pnRender.
 				The files in the zip need to uploaded to /modules/pnRender in
 			the	same	directories that the zip will unpack into.<br>
			<a href="http://www.pncommerce.de/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=11">http://www.pncommerce.de/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=getit&amp;lid=11</a>
	  </p>
		<ul>
        <li>Using the feature:
			Just add &lt;!--[ pncEZComments ItemID=$Item.ID ]--&gt; to 
			pncommerce_user_itemview.html (I already did this in our template).
			This tag will be replaced by a list of comments and the possibility
			to add another one if you have the necessary permission. The layout
			can be changed , it is a smarty template: modules/EZComments/pntemplates/pncommerce.htm
			If this does not exist, default.htm will be used instead.</li>

		<li>Installing the blocks<br>
			Add a new pnRender custom block and go to the block settings. Module
			  	name is pncommerce and template name is either 
			pncommerce_block_itemcomments.html or pncommerce_block_usercomments.html</li>

		<li>They need parameters:<br>
			For itemcomments : numComments and ItemID, e.g. numComments=2;ItemID=13
			  	will show the last two comments for itemid 13<br>
			For usercomments : numComments</li>

		<li>If numComments if not set, the pncReadEZComments plugin used in the 
			block templates will use a default of 3. A missing ItemID in the
		  	itemcomments block will show an error message.</li>

		
		</li>
      </ul>
	  	  
        <p> <a name="1105"></a>11.05 Custom pnRender Blocks<br>
  We have writing a few custom pnRender blocks that can be used with pnCommerce.
    First, you will need to create a custom pnRender block.<a href="../../../../pnimages/pnRenderblock1.jpg" target="_blank"> Click
    Here</a> to see a sample. Then configure it. See sample by <a href="../../../../pnimages/pnRenderblock2.jpg" target="_blank">Clicking
    Here.</a></p>
        <p>Custom pnRender Blocks</p>
        <ul>
          <li>UPS order tracking for the US and Canada.<br>
            /pntemplates/pncommerce_block_upstracking1.php
          </li>
        </ul>
    </blockquote>
	
    <p>&nbsp;</p>
    <p><a href="#toc">Return to Index</a>
      </p>
    <hr>	
	                
      <p></p>
  </blockquote>
</ol>
</body>
</html>
